/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package bean;

import com.mysql.jdbc.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import utilitaire.Constantes;
import utilitaire.GestionSQL;

/**
 *
 * @author romain_lou
 */
public class Personne {

    private String nom, prenom, civilite, numPacage, siret, telephone;
    private String adrPers_rue, adrPers_cp, adrPers_commune;
    private String adrExploit_cp, adrExploit_commune;
    private String ribIBAN, ribBic, ribTitulaire;
    private int id;

	public Personne(){}

    public String getAdrExploit_commune() {
        return adrExploit_commune;
    }

    public void setAdrExploit_commune(String adrExploit_commune) {
        this.adrExploit_commune = adrExploit_commune;
    }

    public String getAdrExploit_cp() {
        return adrExploit_cp;
    }

    public void setAdrExploit_cp(String adrExploit_cp) {
        this.adrExploit_cp = adrExploit_cp;
    }

    public String getAdrPers_commune() {
        return adrPers_commune;
    }

    public void setAdrPers_commune(String adrPers_commune) {
        this.adrPers_commune = adrPers_commune;
    }

    public String getAdrPers_cp() {
        return adrPers_cp;
    }

    public void setAdrPers_cp(String adrPers_cp) {
        this.adrPers_cp = adrPers_cp;
    }

    public String getAdrPers_rue() {
        return adrPers_rue;
    }

    public void setAdrPers_rue(String adrPers_rue) {
        this.adrPers_rue = adrPers_rue;
    }

    public String getCivilite() {
        return civilite;
    }

    public void setCivilite(String civilite) {
        this.civilite = civilite;
    }

    public String getNom() {
        return nom;
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    public String getNumPacage() {
        return numPacage;
    }

    public void setNumPacage(String numPacage) {
        this.numPacage = numPacage;
    }

    public String getPrenom() {
        return prenom;
    }

    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }

    public String getRibBic() {
        return ribBic;
    }

    public void setRibBic(String ribBic) {
        this.ribBic = ribBic;
    }

    public String getRibIBAN() {
        return ribIBAN;
    }

    public void setRibIBAN(String ribIBAN) {
        this.ribIBAN = ribIBAN;
    }

    public String getRibTitulaire() {
        return ribTitulaire;
    }

    public void setRibTitulaire(String ribTitulaire) {
        this.ribTitulaire = ribTitulaire;
    }

    public String getSiret() {
        return siret;
    }

    public void setSiret(String siret) {
        this.siret = siret;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

     


    public String toString(){
		return new StringBuffer("Nom : ").append(nom).append(", ")
			.append("Prenom : ").append(prenom).append(", ")
			.append("civilite : ").append(civilite)
			.toString();
    }

    public void save(){
        int campagneEnCours = Constantes.getCampagneEnCours();

        String requeteUserExist = "SELECT * from client where login_user = '"+getNom()+campagneEnCours+"'";
        try {
            Statement sU = (Statement) GestionSQL.getConnection().getCon().createStatement();
           // ResultSet rU = sU.executeQuery(requeteUserExist);
           int idUser = this.idClient(getNom()+campagneEnCours);
            //rU.getInt("id_client");
            
            //Si l'utilisateur n'est pas existant on le créé
            if(idUser == 0){
                String requete = "INSERT INTO client (login_user, adresse, code_postal, "
                    + "ville, nom, prenom, pacage, siret, telephone, adrExploit_cp,"
                    + " adrExploit_commune, ribIban, ribBic, ribTitulaire) ";
                requete += "VALUE (";
                requete += "'"+getNom()+campagneEnCours+"', ";
                requete += "'"+getAdrPers_rue()+"', ";
                requete += "'"+getAdrPers_cp()+"', ";
                requete += "'"+getAdrPers_commune()+"', ";
                requete += "'"+getNom()+"', ";
                requete += "'"+getPrenom()+"', ";
                requete += "'"+getNumPacage()+"', ";
                requete += "'"+getSiret()+"', ";
                requete += "'"+getTelephone()+"', ";
                requete += "'"+getAdrExploit_cp()+"', ";
                requete += "'"+getAdrExploit_commune()+"', ";
                requete += "'"+getRibIBAN()+"', ";
                requete += "'"+getRibBic()+"', ";
                requete += "'"+getRibTitulaire()+"')";

                //System.out.println(requete);

                utilitaire.Log.getLog().ecrire("MISE A JOUR informations utilisateur..");
                sU.executeUpdate(requete);
                //TODO requete BDD

                idUser = this.idClient(getNom()+getNom()+campagneEnCours);
            }


           this.setId(idUser(getNom()+campagneEnCours));
           //this.setId(idUser);

        } catch (ClassNotFoundException ex) {
            utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        } catch (InstantiationException ex) {
            utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        } catch (IllegalAccessException ex) {
            utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        } catch (SQLException ex) {
           utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        }


        
    }

    private int idClient(String login){
        Statement statement = null;
        int id = 0;
        try {
            statement = (Statement) GestionSQL.getConnection().getCon().createStatement();
        } catch (ClassNotFoundException ex) {
            utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        } catch (InstantiationException ex) {
            utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        } catch (IllegalAccessException ex) {
            utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        } catch (SQLException ex) {
           utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        }
	// Result set get the result of the SQL query

	ResultSet resultSet = null;
        try {
            resultSet = statement.executeQuery("select * from client where login_user = '"+login+"'");
            while (resultSet.next()) {
                id = resultSet.getInt("id_client");
            }

            
        } catch (SQLException ex) {
           utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        }

        return id;
    }


    private int idUser(String login){
        Statement statement = null;
        int id = 0;
        try {
            statement = (Statement) GestionSQL.getConnection().getCon().createStatement();
        } catch (ClassNotFoundException ex) {
            utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        } catch (InstantiationException ex) {
            utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        } catch (IllegalAccessException ex) {
           utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        } catch (SQLException ex) {
            utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        }
	// Result set get the result of the SQL query

	ResultSet resultSet = null;
        try {
            resultSet = statement.executeQuery("select * from utilisateurs where login = '"+login+"'");
            while (resultSet.next()) {
                id = resultSet.getInt("id_user");
            }


        } catch (SQLException ex) {
            utilitaire.Log.getLog().ecrireErreur(ex.getMessage());
        }

        return id;
    }

}
